﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Arim.S4.Client.Base.Dto
{

    /// <summary>
    /// 表示一个排产计划，有可能未执行或已执行结束。
    /// </summary>
    public class JobPlanDto : EntityDto
    {
        /// <summary>
        /// 获取或设置炉次号。
        /// </summary>
        [Display(Name = "炉次号")]
        public string HeatNo { get; set; }

        /// <summary>
        /// 获取或设置制造命令号。
        /// </summary>
        [Display(Name = "制造命令号")]
        public string CmdNo { get; set; }

        /// <summary>
        /// 获取或设置设备。
        /// </summary>
        [Display(Name = "设备")]
        public string Machine { get; set; }

        /// <summary>
        /// 获取或设置钢包号。
        /// </summary>
        [Display(Name = "钢包号")]
        public string LadleNo { get; set; }

        /// <summary>
        /// 获取或设置计划开始的时间。
        /// </summary>
        [Display(Name = "计划开始时间")]
        public DateTime PlanStart { get; set; }

        /// <summary>
        /// 获取或设置计划结束的时间。 
        /// </summary>
        [Display(Name = "计划结束时间")]
        public DateTime PlanEnd { get; set; }

        /// <summary>
        /// 获取该计划工作的持续时间。
        /// </summary>
        [Display(Name = "计划持续时间")]
        public TimeSpan Duration { get; set; }

        /// <summary>
        /// 获取或设置实际开始的时间。
        /// </summary>
        [Display(Name = "实际开始时间")]
        public DateTime? ActStart { get; set; }

        /// <summary>
        /// 获取或设置实际结束的时间。
        /// </summary>
        [Display(Name = "实际结束时间")]
        public DateTime? ActEnd { get; set; }

        /// <summary>
        /// 获取或设置是否激活（正在进行中）。
        /// </summary>
        [Display(Name = "是否已激活")]
        public bool Active { get; set; }

        /// <summary>
        /// 获取或设置Job类型。
        /// </summary>
        public JobPlanType Type { get; set; }

        /// <summary>
        /// 获取或设置工位。
        /// </summary>
        public string WorkId { get; set; }

        /// <summary>
        /// 获取或设置作业的编号。
        /// </summary>
        public string Code { get; set; }

        /// <summary>
        /// 获取或设置作业的序号。
        /// </summary>
        public int Rank { get; set; }
    }

    public class JobPlanQueryDto : IQueryDto
    {
        public DateTime? Start { get; set; }
        public JobPlanType? Type { get; set; }
        public string HeatNo { get; set; }
        public string CmdNo { get; set; }
        public int? Rank { get; set; }
    }

}
